﻿using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using TTGame;

/*
 * LocalBuffDatas
 * 本地Buff数据
 *
 * 策划使用Unity填的Buff数据。不会直接用于游戏运行，会导出到文档，然后通过服务器下发。
 * 记录本地的所有Buff数据。
 * 网游环境下，该类用于显示已接收的服务器Buff。
 * 单机环境下，用于提供BuffData参数表。
 *
 * 依赖：
 *
 * ！不写重复代码！
 * @author TTun
 * @date 8/31/2017 10:53:32 AM
 */
namespace TTGameEngine {

public class LocalBuffDatas : MonoBehaviour {
    //buffType没有处理，导出时注意设置。
    public List<HPBuffData> m_hpBuffdatas = new List<HPBuffData>();
    public List<PropBuffData> m_propBuffdatas = new List<PropBuffData>();
    public List<ShieldBuffData> m_shieldBuffdatas = new List<ShieldBuffData>();
    public List<AttackDamageBuffData> m_attackDamageBuffDatas = new List<AttackDamageBuffData>();
    public List<ReciveDamageBuffData> m_receiveDamageBuffDatas = new List<ReciveDamageBuffData>();
    public List<StateBuffData> m_StateBuffDatas = new List<StateBuffData>();

    public static LocalBuffDatas Self;

    [ReadOnly]
    public string Desc =  "单机填的数据（不会用于联网环境）";
    void Awake() {
        Self = this;
    }

    public void ShowBuffDatas(Dictionary<int, BaseBuffData> data) {
        foreach(var buffData in data.Values) {
            BuffType type = (BuffType)buffData.m_buffType;
            switch(type) {
                case BuffType.PropBuff: {
                        m_propBuffdatas.Add(buffData as PropBuffData);
                    }
                    break;
                case BuffType.HPBuff: {
                        m_hpBuffdatas.Add(buffData as HPBuffData);
                    }
                    break;
                case BuffType.ShieldBuff: {
                        m_shieldBuffdatas.Add(buffData as ShieldBuffData);
                    }
                    break;
                case BuffType.ReceiveDamageBuff: {
                        m_receiveDamageBuffDatas.Add(buffData as ReciveDamageBuffData);
                    }
                    break;
                case BuffType.AttackDamageBuff: {
                        m_attackDamageBuffDatas.Add(buffData as AttackDamageBuffData);
                    }
                    break;
                case BuffType.StateBuff: {
                        m_StateBuffDatas.Add(buffData as StateBuffData);
                    }
                    break;
            }
        }
    }
}
}